package util;

import entities.Usuario;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
import javax.mail.internet.MimeMessage;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import java.util.ArrayList;
import javax.mail.Session;
import javax.mail.SendFailedException;


public class Email
{
   private Address from ;//Dirrecion que manda los email
   private Address to;//Destinatario del mail
   private String server; //servidor de correo
   private String address = "djabreu@gmail.com";//Dirrecion que manda los email
   private String protocol;//Protocolo
   private Usuario usuario;

   //private Configuration configuration;



    public Email(Usuario usuario) throws AddressException
    {
        this.usuario = usuario;
        //this.configuration = Configuration.getInstance();
//        this.server = //configuration.getProperty("MAIL_SERVER");
//        this.address = //configuration.getProperty("FROM");
//        this.protocol = //configuration.getProperty("PROTOCOL");
        from = new InternetAddress(address);
        to = new InternetAddress(usuario.getEmail());
        System.out.println("email Construye la clase");
    }

    public Email()
    {
    }

    public void sendEmail() throws AddressException, MessagingException
    {
        //Crear la sesion de correo y el mensaje
        Properties prop = new Properties();
        //prop.put(protocol, server);

        // Nombre del host de correo, es smtp.gmail.com
        prop.setProperty("mail.smtp.host", "smtp.gmail.com");

        // TLS si está disponible
        prop.setProperty("mail.smtp.starttls.enable", "true");

        // Puerto de gmail para envio de correos
        prop.setProperty("mail.smtp.port","587");

        // Nombre del usuario
        prop.setProperty("mail.smtp.user", "djabreu@gmail.com");

        // Si requiere o no usuario y password para conectarse.
        prop.setProperty("mail.smtp.auth", "true");


        Session session = Session.getInstance(prop, null);
        session.setDebug(true);
        ArrayList<Address> arrayList = new ArrayList<Address>();
        Address lista[] = new Address[2]; //array de destinatarios
        MimeMessage message = new MimeMessage(session);
//
        //añadir las direcciones de correo
        arrayList.add(to);
        arrayList.add(from);
        lista = arrayList.toArray(lista);
//
//
        String cuerpoEmail;
        try
        {
            //Construir cabecera
             message.setFrom(from);
             message.addRecipients(Message.RecipientType.TO, lista);
             message.setSubject("RECORDAR CONTRASEÑA");

            //introducir texto
            cuerpoEmail = "SU contraseña es: "+usuario.getPassword();
            message.setText(cuerpoEmail);
            System.out.println("mandar el  mail");
             // mandar el correo
             Transport tr = session.getTransport("smtp");
             tr.connect("djabreu@gmail.com","914724");
             tr.sendMessage(message,message.getAllRecipients());
             System.out.println("email mandado");
             tr.close();
        }
        catch (SendFailedException e)
        {
            e.printStackTrace();
        }
    }

}

